home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / gfa / gfaexprt.lzh / GFAXPERT.LIB / CHOICE.LST < prev    next >
Encoding:
File List  |  1986-10-19  |  15.6 KB  |  535 lines

  1. ' ******************
  2. ' *** CHOICE.LST ***
  3. ' ******************
  4. '
  5. DEFWRD "a-z"
  6. '
  7. > PROCEDURE choice.2(line,txt$,choice1$,choice2$,VAR choice)
  8.   ' *** click on choice1 or choice2
  9.   ' *** 12 characters allowed in line
  10.   ' *** only High and Medium resolution
  11.   ' *** uses Standard-Globals and Standard-Functions
  12.   LOCAL txt.col,choice1.col,choice2.col,x,y,k,clicked!
  13.   txt.col=scrn.col.max-(LEN(txt$)+50)
  14.   choice1.col=36
  15.   choice2.col=51
  16.   choice1$=" "+choice1$+" "             ! nicer with spaces
  17.   choice2$=" "+choice2$+" "
  18.   PRINT AT(txt.col,line);txt$;
  19.   PRINT AT(choice1.col,line);choice1$;
  20.   PRINT AT(choice2.col,line);choice2$;
  21.   BOX (choice1.col-1)*8,(line-1)*char.height,(choice1.col+LEN(choice1$)-1)*8,line*char.height
  22.   BOX (choice2.col-1)*8,(line-1)*char.height,(choice2.col+LEN(choice2$)-1)*8,line*char.height
  23.   SHOWM
  24.   clicked!=FALSE
  25.   REPEAT
  26.     MOUSE x,y,k
  27.     IF y>(line-1)*char.height AND y<line*char.height
  28.       IF k=1
  29.         clicked!=TRUE
  30.         IF x<50*8
  31.           PRINT AT(choice1.col,line);@rev$(choice1$);
  32.           choice=1
  33.         ELSE
  34.           PRINT AT(choice2.col,line);@rev$(choice2$);
  35.           choice=2
  36.         ENDIF
  37.       ENDIF
  38.     ENDIF
  39.   UNTIL k=1 AND clicked!
  40.   PAUSE 10
  41. RETURN
  42. ' **********
  43. '
  44. > PROCEDURE switch(line,txt$,VAR switch!)
  45.   ' *** choice between ON and OFF
  46.   ' *** only High or Medium resolution
  47.   ' *** uses Standard-Globals and -Functions
  48.   LOCAL txt.col,choice1.col,choice2.col,x,y,k,clicked!
  49.   txt.col=scrn.col.max-(LEN(txt$)+50)
  50.   choice1$="  ON "
  51.   choice2$=" OFF "
  52.   choice1.col=36
  53.   choice2.col=51
  54.   PRINT AT(txt.col,line);txt$;
  55.   PRINT AT(choice1.col,line);choice1$;
  56.   PRINT AT(choice2.col,line);choice2$;
  57.   BOX (choice1.col-1)*8,(line-1)*char.height,(choice1.col+LEN(choice1$)-1)*8,line*char.height
  58.   BOX (choice2.col-1)*8,(line-1)*char.height,(choice2.col+LEN(choice2$)-1)*8,line*char.height
  59.   SHOWM
  60.   clicked!=FALSE
  61.   REPEAT
  62.     MOUSE x,y,k
  63.     IF y>(line-1)*char.height AND y<line*char.height
  64.       IF k=1
  65.         clicked!=TRUE
  66.         IF x<50*8
  67.           PRINT AT(choice1.col,line);@rev$(choice1$);
  68.           switch!=TRUE
  69.         ELSE
  70.           PRINT AT(choice2.col,line);@rev$(choice2$);
  71.           switch!=FALSE
  72.         ENDIF
  73.       ENDIF
  74.     ENDIF
  75.   UNTIL k=1 AND clicked!
  76.   PAUSE 10
  77. RETURN
  78. ' **********
  79. '
  80. > PROCEDURE choice.3(line,txt$,choice1$,choice2$,choice3$,VAR choice)
  81.   ' *** click on choice1, choice2 or choice3
  82.   ' *** 12 characters allowed on line
  83.   ' *** only High or Medium resolution
  84.   ' *** uses Standard-Globals and -Functions
  85.   LOCAL txt.col,choice1.col,choice2.col,choice3.col,x,y,k,clicked!
  86.   txt.col=scrn.col.max-(LEN(txt$)+50)
  87.   choice1.col=36
  88.   choice2.col=51
  89.   choice3.col=66
  90.   choice1$=" "+choice1$+" "             ! nicer with spaces
  91.   choice2$=" "+choice2$+" "
  92.   choice3$=" "+choice3$+" "
  93.   PRINT AT(txt.col,line);txt$;
  94.   PRINT AT(choice1.col,line);choice1$;
  95.   PRINT AT(choice2.col,line);choice2$;
  96.   PRINT AT(choice3.col,line);choice3$;
  97.   BOX (choice1.col-1)*8,(line-1)*char.height,(choice1.col+LEN(choice1$)-1)*8,line*char.height
  98.   BOX (choice2.col-1)*8,(line-1)*char.height,(choice2.col+LEN(choice2$)-1)*8,line*char.height
  99.   BOX (choice3.col-1)*8,(line-1)*char.height,(choice3.col+LEN(choice3$)-1)*8,line*char.height
  100.   SHOWM
  101.   clicked!=FALSE
  102.   REPEAT
  103.     MOUSE x,y,k
  104.     IF y>(line-1)*char.height AND y<line*char.height
  105.       IF k=1
  106.         clicked!=TRUE
  107.         IF x<50*8
  108.           PRINT AT(choice1.col,line);@rev$(choice1$);
  109.           choice=1
  110.         ELSE
  111.           IF x>=50*8 AND x<65*8
  112.             PRINT AT(choice2.col,line);@rev$(choice2$);
  113.             choice=2
  114.           ELSE
  115.             PRINT AT(choice3.col,line);@rev$(choice3$);
  116.             choice=3
  117.           ENDIF
  118.         ENDIF
  119.       ENDIF
  120.     ENDIF
  121.   UNTIL k=1 AND clicked!
  122.   PAUSE 10
  123. RETURN
  124. ' **********
  125. '
  126. > PROCEDURE choice.table(line,VAR proc.table$(),proc.choice())
  127.   ' *** first call Procedure Initio.table
  128.   ' *** click on choices in table
  129.   ' *** only High or Medium resolution
  130.   ' *** uses Standard-Globals and -Functions
  131.   LOCAL n,lines,choice1.col,choice2.col,choice3.col,txt.col,default
  132.   LOCAL clicked!,ok!,nummer,choice1$,choice2$,choice3$,x,y,k,reg
  133.   lines=DIM?(proc.choice())-1
  134.   choice1.col=36
  135.   choice2.col=51
  136.   choice3.col=66
  137.   FOR n=1 TO lines
  138.     reg=line+2*(n-1)
  139.     txt$=proc.table$(n,0)
  140.     choice1$=" "+proc.table$(n,1)+" "       ! nicer with spaces
  141.     choice2$=" "+proc.table$(n,2)+" "
  142.     choice3$=" "+proc.table$(n,3)+" "
  143.     txt.col=scrn.col.max-(LEN(txt$)+50)
  144.     default=proc.choice(n)
  145.     PRINT AT(txt.col,reg);txt$;
  146.     PRINT AT(choice1.col,reg);choice1$;
  147.     PRINT AT(choice2.col,reg);choice2$;
  148.     BOX (choice1.col-1)*8,(reg-1)*char.height,(choice1.col+LEN(choice1$)-1)*8,reg*char.height
  149.     BOX (choice2.col-1)*8,(reg-1)*char.height,(choice2.col+LEN(choice2$)-1)*8,reg*char.height
  150.     IF proc.table$(n,3)>""
  151.       PRINT AT(choice3.col,reg);choice3$;
  152.       BOX (choice3.col-1)*8,(reg-1)*char.height,(choice3.col+LEN(choice3$)-1)*8,reg*char.height
  153.     ENDIF
  154.     IF default>0
  155.       PRINT AT(choice1.col+(default-1)*15,reg);@rev$(" "+proc.table$(n,default)+" ");
  156.     ENDIF
  157.   NEXT n
  158.   PRINT AT(38,24);" OK ";
  159.   DEFLINE 1,3
  160.   BOX 37*8,23*char.height,41*8,24*char.height
  161.   DEFLINE 1,1
  162.   SHOWM
  163.   clicked!=FALSE
  164.   ok!=FALSE
  165.   REPEAT
  166.     REPEAT
  167.       MOUSE x,y,k
  168.       in$=INKEY$
  169.       IF in$=return$
  170.         ok!=TRUE
  171.         PRINT AT(38,24);@rev$(" OK ");
  172.       ENDIF
  173.       EXIT IF ok!
  174.       IF y>(line-1)*char.height AND y<(line+2*lines)*char.height
  175.         IF k=1
  176.           clicked!=TRUE
  177.           nummer=(y/char.height+1-line)/2+1
  178.           choice1$=" "+proc.table$(nummer,1)+" "
  179.           choice2$=" "+proc.table$(nummer,2)+" "
  180.           choice3$=" "+proc.table$(nummer,3)+" "
  181.           reg=line+2*(nummer-1)
  182.           IF x<50*8
  183.             PRINT AT(choice1.col,reg);@rev$(choice1$);
  184.             PRINT AT(choice2.col,reg);choice2$;
  185.             BOX (choice2.col-1)*8,(reg-1)*char.height,(choice2.col+LEN(choice2$)-1)*8,reg*char.height
  186.             IF proc.table$(nummer,3)>""
  187.               PRINT AT(choice3.col,reg);choice3$;
  188.               BOX (choice3.col-1)*8,(reg-1)*char.height,(choice3.col+LEN(choice3$)-1)*8,reg*char.height
  189.             ENDIF
  190.             proc.choice(nummer)=1
  191.           ELSE
  192.             IF (x>=50*8 AND x<65*8 AND choice3$>"") OR (x>=50*8 AND choice3$="")
  193.               PRINT AT(choice1.col,reg);choice1$;
  194.               BOX (choice1.col-1)*8,(reg-1)*char.height,(choice1.col+LEN(choice1$)-1)*8,reg*char.height
  195.               PRINT AT(choice2.col,reg);@rev$(choice2$);
  196.               IF proc.table$(nummer,3)>""
  197.                 PRINT AT(choice3.col,reg);choice3$;
  198.                 BOX (choice3.col-1)*8,(reg-1)*char.height,(choice3.col+LEN(choice3$)-1)*8,reg*char.height
  199.               ENDIF
  200.               proc.choice(nummer)=2
  201.             ELSE
  202.               PRINT AT(choice1.col,reg);choice1$;
  203.               BOX (choice1.col-1)*8,(reg-1)*char.height,(choice1.col+LEN(choice1$)-1)*8,reg*char.height
  204.               PRINT AT(choice2.col,reg);choice2$;
  205.               BOX (choice2.col-1)*8,(reg-1)*char.height,(choice2.col+LEN(choice2$)-1)*8,reg*char.height
  206.               PRINT AT(choice3.col,reg);@rev$(choice3$);
  207.               proc.choice(nummer)=3
  208.             ENDIF
  209.           ENDIF
  210.         ENDIF
  211.       ENDIF
  212.       IF y>23*char.height
  213.         IF k=1
  214.           PRINT AT(38,24);@rev$(" OK ");
  215.           ok!=TRUE
  216.         ENDIF
  217.       ENDIF
  218.     UNTIL k=1 AND (clicked! OR ok!)
  219.     PAUSE 10
  220.   UNTIL ok!
  221. RETURN
  222. ' ***
  223. > PROCEDURE initio.table
  224.   ' *** global :  TABLE$()   CHOICE()
  225.   ' *** 1e DATA-line : number of lines
  226.   ' *** following DATA-lines : 1st choice,2nd choice,[3rd choice],*,0/1/2/3
  227.   ' *** 3rd choice optional; last number is default choice
  228.   ' *** 12 characters allowed on one line
  229.   LOCAL n,i,lines,x$,default
  230.   initio.table:
  231.   DATA 3
  232.   DATA 1st line,1st choice,2nd choice,*,1
  233.   DATA 2nd question,first,second,third,*,0
  234.   DATA 3rd possibility,on,off,*,2
  235.   RESTORE initio.table
  236.   READ lines
  237.   ERASE table$(),choice()
  238.   DIM table$(lines,3),choice(lines)
  239.   FOR n=1 TO lines
  240.     i=0
  241.     DO
  242.       READ x$
  243.       EXIT IF x$="*"
  244.       table$(n,i)=x$
  245.       INC i
  246.     LOOP
  247.     READ default
  248.     choice(n)=default
  249.   NEXT n
  250. RETURN
  251. ' **********
  252. '
  253. > PROCEDURE dial.number(line,txt$,default,min,max,step1,step2,cycle!,VAR choice)
  254.   ' *** choose number with mouse
  255.   ' *** after pressing <Help>, a short description appears
  256.   ' *** only High or Medium resolution
  257.   ' *** uses Standard-Globals and -Procedures
  258.   LOCAL c,txt.col,fld,tot.fld,fld$,clr.fld$,dwn.col,num.col,up.col
  259.   LOCAL x.lft,x.rgt,x,y,k,in$,dial!,delta
  260.   c=char.height
  261.   txt.col=scrn.col.max-(LEN(txt$)+50)
  262.   PRINT AT(txt.col,line);txt$;
  263.   fld=LEN(STR$(max))
  264.   tot.fld=fld+6
  265.   fld$=STRING$(fld,"#")
  266.   LET clr.fld$=SPACE$(LEN(fld$))
  267.   dwn.col=37
  268.   x.lft=(dwn.col+1)*8
  269.   x.rgt=(dwn.col+tot.fld-3)*8
  270.   num.col=dwn.col+3
  271.   up.col=dwn.col+fld+5
  272.   PRINT AT(dwn.col-1,line);" ";
  273.   OUT 5,2
  274.   PRINT AT(up.col-1,line);" ";
  275.   OUT 5,1
  276.   PRINT AT(num.col,line);USING fld$,default;
  277.   BOX (dwn.col-2)*8,(line-1)*c-1,(dwn.col+tot.fld)*8,line*c
  278.   LINE x.lft,(line-1)*c,x.lft,line*c
  279.   LINE x.rgt,(line-1)*c,x.rgt,line*c
  280.   DEFMOUSE 0
  281.   SHOWM
  282.   choice=default
  283.   dial!=FALSE
  284.   DO
  285.     MOUSE x,y,k
  286.     in$=INKEY$
  287.     IF in$=return$
  288.       dial!=TRUE
  289.     ENDIF
  290.     IF in$=help$
  291.       @help.dial.number
  292.     ENDIF
  293.     IF y>(line-1)*c AND y<(line)*c+1
  294.       IF k=1 OR k=2
  295.         IF x>x.lft AND x<(dwn.col+tot.fld-3)*8
  296.           dial!=TRUE
  297.         ENDIF
  298.         IF x<x.lft
  299.           delta=step1*(k=1)+step2*(k=2)
  300.         ENDIF
  301.         IF x>x.rgt
  302.           delta=-step1*(k=1)-step2*(k=2)
  303.         ENDIF
  304.         IF NOT dial!
  305.           choice=choice+delta
  306.           IF choice>max
  307.             IF NOT cycle!
  308.               choice=max
  309.               PRINT bel$;
  310.             ELSE
  311.               choice=min+(choice-max)
  312.             ENDIF
  313.           ENDIF
  314.           IF choice<min
  315.             IF NOT cycle!
  316.               choice=min
  317.               PRINT bel$;
  318.             ELSE
  319.               choice=max-(min-choice)
  320.             ENDIF
  321.           ENDIF
  322.           PRINT AT(num.col,line);clr.fld$;
  323.           PRINT AT(num.col,line);USING fld$,choice
  324.           PAUSE 5
  325.         ENDIF
  326.       ENDIF
  327.     ENDIF
  328.     EXIT IF dial!
  329.   LOOP
  330.   PRINT AT(dwn.col,line);SPACE$(tot.fld)
  331.   PRINT AT(num.col,line);USING fld$,choice
  332.   BOX (dwn.col-2)*8,(line-1)*c-1,(dwn.col+tot.fld)*8,line*c
  333. RETURN
  334. ' ***
  335. > PROCEDURE help.dial.number
  336.   LOCAL screen$
  337.   SGET screen$
  338.   CLS
  339.   PRINT AT(1,4);" ";
  340.   OUT 5,2
  341.   PRINT " = decrease number with mouse-click (lowest value = ";min;")"
  342.   PRINT
  343.   PRINT " ";
  344.   OUT 5,1
  345.   PRINT " = increase number with mouse-click (highest value = ";max;")"
  346.   PRINT
  347.   PRINT " left button  : 1 click = ";step1
  348.   PRINT
  349.   PRINT " right button : 1 click = ";step2
  350.   PRINT
  351.   IF cycle!
  352.     PRINT " cycles from highest value to lowest value (and back)"
  353.     PRINT
  354.   ENDIF
  355.   PRINT " choose number by mouse-click or by pressing <Return>"
  356.   @return.key
  357.   SPUT screen$
  358. RETURN
  359. ' **********
  360. '
  361. > PROCEDURE pop.choice(x,y,VAR pop.choice!())
  362.   ' *** first call Procedure Initio.pop.choice
  363.   ' *** pop=up menu appears at (x,y)
  364.   ' *** High resolution only
  365.   ' *** after pressing <Help>, a short description appears
  366.   ' *** you can click one or more lines
  367.   ' *** original screen is restored
  368.   LOCAL n,xb2%,lines,height,width,i,r$,m0,m1,y_pos,c,f,top,f_pos,mx,my,mk
  369.   LOCAL screen$,in$
  370.   n=DIM?(pop.choice$())-1
  371.   ERASE pop.choice!()
  372.   DIM pop.choice!(n)
  373.   xb2%=XBIOS(2)
  374.   '
  375.   IF n>10                               ! width, height and position of box
  376.     height=260
  377.     lines=13
  378.   ELSE
  379.     height=n*20+20
  380.     lines=n
  381.   ENDIF
  382.   width=LEN(pop.choice$(0))
  383.   FOR i=1 TO n
  384.     width=MAX(LEN(pop.choice$(i)),width)
  385.   NEXT i
  386.   width=(width+4)*8
  387.   x=MIN(x,639-width-16)
  388.   y=MIN(y,125)
  389.   x=MAX(x,10)
  390.   y=MAX(y,20)
  391.   '
  392.   GET x-3,y-3,x+width+3,y+height+3,r$
  393.   '
  394.   ACLIP 1,0,0,639,399                                  ! box + text
  395.   m1=-1
  396.   ARECT x-3,y-2,x+width+3,y+height+2,1,0,V:m1,0
  397.   m0=0
  398.   ARECT x,SUCC(y),x+width,PRED(y+height),1,0,V:m0,0
  399.   y_pos=y+20
  400.   FOR i=1 TO lines
  401.     HLINE x,y_pos,x+width,1,0,V:m1,0
  402.     ADD y_pos,20
  403.   NEXT i
  404.   c=width/8-2
  405.   IF lines=13
  406.     y_pos=y+42
  407.     ATEXT x+8,y+22,2,STRING$(c,1)
  408.     ATEXT x+8,y+242,2,STRING$(c,2)
  409.   ELSE
  410.     y_pos=y+22
  411.   ENDIF
  412.   ATEXT x+8+(c-LEN(pop.choice$(0)))*4,y+7,1,pop.choice$(0)
  413.   FOR i=1 TO MIN(lines,10)
  414.     ATEXT x+8+(c-LEN(pop.choice$(i)))*4,y_pos,2,pop.choice$(i)
  415.     ADD y_pos,20
  416.   NEXT i
  417.   '
  418.   top=0
  419.   f=-1
  420.   REPEAT
  421.   UNTIL INKEY$=""
  422.   REPEAT                                                 ! menu-selection loop
  423.     MOUSE mx,my,mk
  424.     '
  425.     in$=INKEY$
  426.     IF in$=help$
  427.       SGET screen$
  428.       CLS
  429.       PRINT AT(1,6);" click left mouse-button to make (or undo) choice"
  430.       PRINT
  431.       IF lines>10
  432.         PRINT " scroll one line with left mouse-button"
  433.         PRINT
  434.         PRINT " scroll to begin or end with right mouse-button"
  435.         PRINT
  436.       ENDIF
  437.       PRINT
  438.       PRINT
  439.       PRINT " press right button outside box to leave menu"
  440.       ~INP(2)
  441.       SPUT screen$
  442.       in$=""
  443.     ENDIF
  444.     '
  445.     IF mx>x AND mx<x+width AND my>y+20 AND my<y+height   ! mouse on choice
  446.       IF TRUNC((my-y)/20)<>f
  447.         IF f<>-1
  448.           ARECT SUCC(x),y+f*20+2,PRED(x+width),y+f*20+18,1,2,V:m1,0
  449.         ENDIF
  450.         f=TRUNC((my-y)/20)
  451.         ARECT SUCC(x),y+f*20+2,PRED(x+width),y+f*20+18,1,2,V:m1,0
  452.       ENDIF
  453.     ELSE
  454.       IF f<>-1
  455.         ARECT SUCC(x),y+f*20+2,PRED(x+width),y+f*20+18,1,2,V:m1,0
  456.       ENDIF
  457.       f=-1
  458.     ENDIF
  459.     '
  460.     IF mk=1
  461.       IF (f>1 AND f<12 AND lines=13) OR (f>0 AND f<11 AND lines<>13)
  462.         f_pos=f+top                                            ! choice clicked
  463.         IF lines=13
  464.           DEC f_pos
  465.         ENDIF
  466.         pop.choice!(f_pos)=NOT pop.choice!(f_pos)
  467.         IF pop.choice!(f_pos)
  468.           ARECT SUCC(x),y+f*20+2,PRED(x+width),y+f*20+18,1,2,V:m1,0
  469.           ATEXT PRED(x+width)-8,y+f*20+2,2,CHR$(8)
  470.           ARECT SUCC(x),y+f*20+2,PRED(x+width),y+f*20+18,1,2,V:m1,0
  471.         ELSE
  472.           ARECT PRED(x+width)-8,y+f*20+2,PRED(x+width),y+f*20+18,1,0,V:m1,0
  473.         ENDIF
  474.         WHILE MOUSEK
  475.         WEND
  476.         MOUSE mx,my,mk
  477.       ENDIF
  478.     ENDIF
  479.     '
  480.     IF lines=13 AND (f=1 OR f=12) AND mk            ! scroll
  481.       IF f=1                                        ! scroll down
  482.         IF top>0
  483.           RC_COPY xb2%,SUCC(x),y+40,PRED(width),height-80 TO xb2%,SUCC(x),y+60
  484.           ARECT SUCC(x),y+41,PRED(x+width),y+59,1,0,V:m0,0
  485.           ATEXT x+8+(c-LEN(pop.choice$(top)))*4,y+42,2,pop.choice$(top)
  486.           IF pop.choice!(top)
  487.             ATEXT PRED(x+width)-8,y+42,2,CHR$(8)
  488.           ENDIF
  489.           DEC top
  490.         ENDIF
  491.       ELSE
  492.         IF top+11<=n                                ! scroll up
  493.           RC_COPY xb2%,SUCC(x),y+60,PRED(width),height-80 TO xb2%,SUCC(x),y+40
  494.           ARECT SUCC(x),y+221,PRED(x+width),y+239,1,0,V:m0,0
  495.           ATEXT x+8+(c-LEN(pop.choice$(top+11)))*4,y+222,2,pop.choice$(top+11)
  496.           IF pop.choice!(top+11)
  497.             ATEXT PRED(x+width)-8,y+222,2,CHR$(8)
  498.           ENDIF
  499.           INC top
  500.         ENDIF
  501.       ENDIF
  502.       WHILE MOUSEK=1
  503.       WEND
  504.       mk=0
  505.     ENDIF
  506.     '
  507.   UNTIL mk=2 AND f=-1      ! quit menu
  508.   PUT x-3,y-3,r$
  509.   ACLIP 0,0,0,639,399
  510. RETURN
  511. ' ***
  512. > PROCEDURE initio.pop.choice
  513.   ' *** global :   POP.CHOICE$()
  514.   LOCAL n,i,pop$
  515.   RESTORE pop.data
  516.   n=-1
  517.   REPEAT
  518.     READ pop$
  519.     INC n
  520.   UNTIL pop$="***"
  521.   DEC n
  522.   DIM pop.choice$(n)
  523.   RESTORE pop.data
  524.   FOR i=0 TO n
  525.     READ pop.choice$(i)
  526.   NEXT i
  527.   '
  528.   pop.data:
  529.   DATA menu-title
  530.   DATA 1st choice,2nd choice,3rd choice
  531.   DATA ***
  532. RETURN
  533. ' **********
  534. '
  535.